Top 10k strings from ZZZ-UNK-Asm.z80
in <root> / bin / z80 / software / Sinclair Spectrum Collection TOSEC.exe / Sinclair ZX Spectrum - Games / [Z80] /
Back to the directory listing
8 HL,(H01D6) 5 HL,(H01D2) 5 (H01D2),HL 4 HL,(H01D0) 4 (H20EB),HL 4 (H01D6),HL 4 (H01D0),HL 3 LD A,(H0185) ;char mode 3 CALL H0D38 ;select HEX file drive 2 HL,(H099F) 2 HL,(H029B) 2 HL,(H01D4) 2 HL,(H01CD) 2 HL,(H01CB) 2 0,0,0,0,0,0,0,0 2 (H099F),HL 2 (H069D),HL 2 (H029B),HL 2 (H0221),HL 2 (H01C9),HL 2 (H0186),HL 2 CP 03H ;literal? 2 CALL NZ,H20DD ; 'L' error 2 CALL H1F17 ;check for comma 2 CALL H18F4 ;call subroutine from table 2 CALL H1349 ;test results 2 CALL H0D31 ;select PRN file drive 1 HL,(H20ED) 1 HL,(H20EB) 1 HL,(H196B) 1 HL,(H1881) 1 HL,(H069D) 1 HL,(H01C9) 1 HL,(H0186) 1 HL,(H0005+1) 1 H20F0: DEFS 1 ;label table begins here 1 H20EF: DEFS 1 ;char index into H010C PRN line buffer 1 H20ED: DEFS 02H ;EOF addr after 'END' (value of symbol) 1 H20EB: DEFS 02H ;last H01D6 value from H1346 call 1 H20E3: PUSH AF ; 'N' error 1 H20DD: PUSH AF ; 'L' error 1 H20D7: PUSH AF ; 'P' error 1 H20D1: PUSH AF ; 'D' error 1 H20C7: PUSH AF ; 'V' error 1 H20BD: PUSH AF ; 'R' error 1 H20A6: LD HL,(H01D2) ;print PC addr in ascii to PRN buffer 1 H2096: PUSH AF ;print byte to PRN buffer 1 H2074: PUSH HL ;write HL to PRN buffer and HEX file 1 H206C: LD HL,(H01D0) ;advance PC counter 1 H2048: LD A,(H01CF) ;store byte in B reg 1 H2047: LD B,A 1 H2031: CALL H1352 ;test nibble 1 H200A: CALL H2000 1 H2000: LD HL,(H20EB) ;test H20EB for 0. move to H01D6 and ret in HL 1 H1FCB: LD A,(DE) ;put 'USE FACTOR' in PRN buffer 1 H1F8B: LD HL,H01CF ;assembler pass count 1 H1F84: LD A,E ;HL=DE-HL 1 H1F72: CP 21H ; '!' 1 H1F4A: CP 3BH ; ';' 1 H1F17: PUSH AF ;check for comma 1 H1F11: CALL H1ED1 ;parse and store 16 bit label/address (operand) 1 H1F0B: CALL H1EDD ;parse and store 8 bit label/address (operand) 1 H1EFC: CALL H1EF2 ;store 16 bit regs (even# B,D or H) ORA'd with B(=parm2) 1 H1EF2: CALL H1EE7 ;get 8 bit reg char value (0-7) into bits 3,4,5 of ACC 1 H1EE7: CALL H1EDD ;parse 8 bit reg char value into ACC (0 to 7 = ACC to M) 1 H1EDD: CALL H1ED1 ;get 8 bit reg value or label address into ACC reg. 1 H1ED1: PUSH BC ;get 16 bit reg value or label address into HL reg. 1 H1EB1: CALL H200A ;each instruction line comes here to close 1 H1E60: CALL H2048 ;store opcode in HEX file 1 H1E50: CALL H1EF2 ;get reg mask following MVI instruction 1 H1E41: CALL H1EF2 ;f(MOV) 1 H1E1E: CALL H1EFC ;process reg char following DAD instruction 1 H1E12: CALL H1EFC ;process reg char following LXI instruction 1 H1DEB: DEFW H1E09 ;(13h) DI EI CMA CMC DAA HLT NOP RAL RAR RET RLC RRC STC 1 H1DD7: SUB 13H ;ACC = parm1 value from H15A6 call 1 H1DA7: CALL H2000 ;f(SET) 1 H1D8D: CALL H1ED1 ;f(ORG) 1 H1D87: CALL H20E3 ;f(MACRO) gives 'N' error (not supported) 1 H1D40: CALL H200A ;f(IF) 1 H1D1E: CALL H2000 ;f(EQU) 1 H1D18: CALL H20E3 ;f(ENDM) gives 'N' error (not supported) 1 H1D15: JP H1DD1 ;f(ENDIF) 1 H1CDE: CALL H200A ;f(END) 1 H1CC0: CALL H200A ;f(DW) 1 H1CA9: CALL H200A ;f(DS) 1 H1C43: DEFW H1C5B ;(01h) DB 1 H1BFE: CALL H1352 ;get symbol assignment nibble 1 H1BBF: LD A,(H0185) ;set char type in H0185 1 H1BBC: CALL H1106 ;parse word into H0189 and H010C buffers and 1 H1BA7: CALL H1103 ;new line (send CR/LF to PRN file) 1 H1BA0: XOR A ;entry to assembler with PRN and HEX files open 1 H1B85: PUSH HL ; 'E' error 1 H1B7F: CALL H1106 ;f(+) 1 H1B6E: CALL H1358 ;get symbol value into HL 1 H1B64: CALL H1352 ;test nibble 1 H1B50: CALL H1346 ;check for duplicate label 1 H1B1E: CP 08H ;f(NOT) = 8 1 H1B0E: LD A,C ;parm1 1 H1A94: CALL H15A6 ;scan for match. if match then ACC=parm1 B=parm2 1 H1A89: CP 02H ;char type = numeric 1 H1927: CALL H1B85 ;call 'E' error 1 H18F4: LD L,A ;call subroutine from H1901 table based on 1 H18EC: CALL H18CF ;get 2 pairs from H1881 buffer to HL and DE regs 1 H18CF: LD HL,H1892 ;get previous pair to HL reg from H1881 buffer 1 H18B0: PUSH AF ;store parm1,parm2 in H186D and H1877 buffers 1 H1893: EX DE,HL ;store HL reg pair in H1881 buffer and increment 1 H1892: DEFS 01H ;index into H1881 buffer 1 H1891: DEFS 01H ;index into H186D or H1877 buffers 1 H1877: DEFS 0AH ;buffer for parm2 values 1 H186D: DEFS 0AH ;buffer for parm1 values 1 H186C: DEFS 01H ;flag 0 or FFh 1 H1869: JP H1938 ;return 'USE FACTOR' value in DE reg 1 H1863: JP H1A19 ;return addr of symbol in H01C9 and (HL) reg 1 H1860: JP H1BA0 ;enter assembler with PRN and HEX files open 1 H16BD: DEFB 0FH,0AH 1 H15BA: DEFW H16BD ;length = 1 1 H15B5: DEFB 10H ;# of 1 char words in H15C4 table 1 H15A9: DEFW H15C4 ;mnem length = 1 (as in reg designation char) 1 H15A6: JP H1810 ;check word for match. return z-set for match 1 H15A0: JP H1860 ;enter assembler with PRN and HEX files open 1 H157F: CALL H148E ;return HL pointing to value field of 1 H1533: INC HL ;store label name 1 H14EB: LD HL,H0188 ;add symbol from H0188 buffer to end of symbol 1 H149E: CALL H1471 ;search for duplicate label. return H01D6=0 if 1 H148E: LD HL,(H01D6) ;get length of symbol table 1 H1471: LD HL,H0188 ;add all chars of label then mask bit 7 1 H135B: DEFS 100H ;buffer table holds 16 bit values. offset into 1 H1358: JP H1596 ;get value of symbol at (H01D6) into HL 1 H1355: JP H158D ;set value field of symbol at (H01D6) from HL 1 H1352: JP H1572 ;get nibble from symbol table 1 H134F: JP H1560 ;set nibble in symbol table at (H01D6) from 1 H134C: JP H14EB ;add symbol. see H14EB for more description 1 H1349: JP H1498 ;ret dup label addr in HL. z-set if no dup 1 H1346: JP H149E ;using label in H0188 buffer, search for 1 H1343: JP H145C ;clear H135B buffer 1 H1340: JP H15A0 ;enter assembler with PRN and HEX files open 1 H132D: PUSH AF ;convert lower to upper case if not in quotes 1 H131E: PUSH AF ; 'O' error. all regs preserved 1 H1318: PUSH AF ; 'V' bad value error. all regs preserved 1 H12B8: LD (H110B),A ;set base 1 H12B4: LD HL,H0188 ;index 1 H12AD: CP 44H ; 'D' decimal 1 H128F: CP 48H ; 'H' 1 H128A: LD A,08H ;base 8 for octal 1 H123C: LD A,(H110A) ;last char 1 H1221: CP 0AH 1 H11F4: CALL H11AD ;get next char 1 H11E1: CALL H11AD ;search ahead to EOL 1 H11C7: LD A,(H110A) ;each char loops here 1 H11C0: XOR A ;parse line 1 H11AD: CALL H110C ;get char and store in PRN line buffer 1 H1196: CALL H118B ;return z clear if 'A-Z' or '0-9' alphanumeric 1 H118B: LD A,(H110A) ;return z clear if 'A-Z' alpha 1 H117C: CALL H1171 ;return z clear if '0-9' or 'A-F' hex digit 1 H1171: LD A,(H110A) ;return z clear if '0-9' digit 1 H116A: LD A,(HL) ;null out '$' at (HL) 1 H1151: LD HL,H0188 ;store char in H0189 buffer 1 H1132: CALL H1149 ;print CR/LF to PRN file 1 H1130: POP AF ;restore char 1 H110C: CALL H0206 ;get char from ASM file and store in 1 H110B: NOP ;base 2,8,10 or 16 for numeric value 1 H110A: NOP ;last char read from ASM file 1 H1109: NOP ;previous char from H110A 1 H1106: JP H11C0 ;parse line up to non-alphanumeric char (EOL) 1 H1103: JP H1132 ;output cr/lf to PRN file (clears line buffer) 1 H1100: JP H1340 ;enter assembler with PRN and HEX files open 1 H10B8: LD A,3AH ;write complete line to HEX file 1 H109A: PUSH AF ;write ACC reg to HEX file in HEX ASCII form 1 H108A: LD HL,H0223 ;write ACC reg to H0224 obj buffer and 1 H1081: CALL H10B8 ;write complete line to HEX file 1 H104C: PUSH BC ;write ACC reg to HEX file 1 H0F86: LD A,(H0237) ;check HEX designation 1 H0F77: CALL H0D28 ;error in writing PRN or HEX file comes here 1 H0F39: CALL H0D28 ;close files and exit 1 H0F15: LD (H0184),A ;write CR to PRN file then clear line buffer 1 H0F00: LD A,(H0184) ;print H010C line buffer to PRN file with 1 H0EEB: LD C,A ;write ACC reg to PRN designation. echo error 1 H0EDE: PUSH BC ;write ACC reg to console 1 H0EAA: PUSH BC ;write ACC to HEX file with disk buffering 1 H0E7A: LD A,(HL) ;write HEX file comes here 1 H0E53: LD HL,(H069D) ;write byte to PRN file 1 H0E34: PUSH BC ;output char in ACC reg to PRN designation: 1 H0E2B: LD HL,H0FFA ; 'source file read error' exit 1 H0DCA: PUSH BC ;get char from ASM file 1 H0DBB: LD HL,H0FE3 ; 'source filename error' exit 1 H0DA1: LD HL,0400H ;open ASM file. force reading of first byte 1 H0D9E: JP H1100 ;enter assembler with HEX and PRN files open 1 H0D3F: LD A,(H005C) ;drive designation 1 H0D38: LD A,(H0237) ;select HEX file drive 1 H0D31: LD A,(H0236) ;select PRN file drive 1 H0D21: LD A,(H0235) ;select ASM file drive 1 H0D10: LD C,16H ;make file. (DE) = FCB 1 H0D0B: LD C,13H ;delete file. (DE) = FCB 1 H0CFA: LD C,10H ;close file 1 H0CE9: LD C,0FH ;open file 1 H0CE0: LD HL,H0FA0 ;cold start 1 H0CCD: LD DE,H005C ;move 9 bytes from FCB to (HL) 1 H0CBC: LD A,(HL) ;print string at (HL). terminate w/cr 1 H0CA1: LD HL,H0234 ;select drive in ACC reg and make it the current drive 1 H09A1: DEFS 300H ;buffer for HEX file write 1 H099F: DEFS 02H ;index into H09A1 buffer 1 H069F: DEFS 300H ;buffer for PRN file write 1 H069D: DEFS 02H ;index into H069F buffer 1 H029D: DEFS 400H ;buffer for ASM file read 1 H029B: DEFS 02H ;index into H029D buffer 1 H027A: DEFS 9 ;HEX filename 1 H0258: DEFS 01H ;PRN filename 1 H0238: DEFS 9 ;ASM filename 1 H0237: DEFS 01H ;HEX file drive designation 1 H0236: DEFS 01H ;PRN file drive designation 1 H0235: DEFS 01H ;ASM file drive designation 1 H0234: DEFS 01H ;current disk 1 H0224: DEFS 10H ;obj code line buffer for PRN and HEX use 1 H0223: DEFS 01H ;index into line of H0224 1 H0221: DEFS 02H ;HEX file pointer (base address of line) 1 H021E: JP H0F39 ;close files and exit 1 H021B: JP H104C ;write byte in ACC reg to HEX file in ASCII form 1 H0218: JP H0F2F ;put error code from ACC reg into H010C flag 1 H0215: JP H0F00 ;print H010C line buffer to PRN file w/echo to console 1 H0212: JP H0CBC ;print string at (HL). terminates with cr 1 H0206: JP H0DCA ;get char from H029D ASM file buffer. 1 H0203: JP H0DA1 ;open ASM file 1 H0200: JP H0CE0 ;cold start 1 H01D6: DEFS 2AH ;stack space below H0200 1 H01D4: DEFW H20F0 ;start of symbol table (fixed) 1 H01D2: DEFS 02H ;address printed at start of line in PRN file 1 H01D0: DEFS 02H ;address counter (for HEX file also) 1 H01CF: DEFS 01H ;assembly pass count 0=build symbol table 1=table done 1 H01CD: DEFS 02H ;contains BDOS base (end of memory space) 1 H01CB: DEFW H20F0 ;contains end of symbol table 1 H0189: DEFS 01H ;64 byte ASM line buffer 1 H0188: DEFS 01H ;index into H0189 ASM buffer 1 H0186: DEFS 02H ;holds value of numeric expression from H1106 call 1 H0185: DEFS 01H ;char type. 4=EOL 3=literal 2=digit 1=alpha 1 H0184: DEFS 01H ;index into H010C PRN buffer 1 H010D: DEFB 'C' ;if H010C is non-space then contains error code: 1 H010C: DEFB ' ' ;120 byte line buffer for PRN output 1 H0080 EQU 0080H ;DMA 1 H005C EQU 005CH ;FCB 1 H0005 EQU 0005H ;BDOS 1 H0000 EQU 0000H ;cold re-entry to system 1 ;table for parm1 = 13h to 21h. parm1 value in () 1 ;table for parm1 = 11h. parm2 referenced in () 1 ;on 2nd pass store byte from ACC in hex ascii form to H010C PRN line buffer 1 ;assigned value. (H01D6): 00 00 X3 BDOS DW 0005 1 ;and HEX file. also write PC address in hex ascii if at beginning of line. 1 ;ACC reg low nibble. when nibble designated by X is set then symbol has been 1 ; value is set and matches current PC else 'P' phase error 1 ; using command ASM TEST.ABC will assemble TEST.ASM with drive designations 1 ; they are referenced in source comments as parm1 and parm2. 1 ; the following tables must have at least two words in table and words must be 1 ; the following are 2 byte parameters corresponding to each word. 1 ; send to [email protected] 1 ; on 1st pass if H20EB non-zero then set PC counter to value of symbol operand 1 ; non-alphanumeric chars encountered in label being evaluated come here to 1 ; in alphabetical order 1 ; if parm1 = 10H then parm2 represents a register as follows: 1 ; got any comments or suggestions? 1 ; for first pair at H16BD: parm1 = 0FH, parm2 = 0AH 1 ; following period. A=ASM file drive, B=HEX file drive, C=SYM file drive 1 ; evaluate possible expression (math) 1 ; disassembled by Larry A. Greene 1 ; at (H20EB). clear up unevaluated label, if any. on 2nd pass make sure label 1 ; Digital Research ASM assembler 1 ; B=0 C=1 D=2 E=3 H=4 L=5 M,SP,PSW=6 1 ; 2nd pass loops here 1 1DH,98H,1AH,0DEH,11H,0BH,03H,50H 1 1DH,0B0H,11H,0AH,1AH,0F6H,21H,0D3H 1 1DH,0A0H,09H,32H,1AH,0E6H,13H,2FH 1 1BH,02H,13H,0EBH,13H,0E3H 1 1AH,0D6H,0BH,28H,1DH,0A8H,1AH,0EEH 1 1AH,0CEH,1DH,88H,1DH,80H,1AH,0C6H 1 18H,40H,19H,06H,13H,00H,08H,3CH 1 17H,0CDH,11H,06H,1BH,0AH,1CH,2AH 1 17H,0C3H,1CH,3AH,14H,01H,02H,50H 1 16H,0C1H,10H,06H,13H,17H,13H,1FH 1 15H,09H,1EH,05H,1FH,0BH,11H,04H 1 13H,3FH,1DH,0B8H,1AH,0FEH,13H,27H 1 13H,0FBH,11H,08H,21H,0DBH,0AH,28H 1 13H,0E9H,16H,0C5H,1CH,22H,13H,0F9H 1 13H,0C9H,13H,07H,13H,0FH,20H,0C7H 1 11H,07H,13H,76H,1EH,04H,1FH,03H 1 11H,05H,11H,09H,11H,0CH 1 11H,01H,13H,0F3H,11H,02H,11H,03H 1 10H,07H,10H,00H,10H,01H,10H,02H 1 10H,03H,10H,04H,10H,05H,10H,06H 1 05H,46H,0EH,0AH,06H,46H,01H,50H 1 04H,50H,1CH,32H,13H,37H,1DH,90H 1 0,0,0,0,0,0,0,0,0,0,0 1 (H20ED),HL 1 (H196B),HL 1 (H01CB),HL 1 'TSHLSHRSTASTCSUBSUIXORXRAXRI' 1 'SYMBOL TABLE OVERFLOW' 1 'SOURCE FILE READ ERROR' 1 'SOURCE FILE NAME ERROR' 1 'OUTPUT FILE WRITE ERROR' 1 'NZZ NCC POPEP M ' 1 'NO SOURCE FILE PRESENT' 1 'NO DIRECTORY SPACE' 1 'IGHT(C) 1978, DIGITAL RESEARCH ' 1 'H USE FACTOR' 1 'ENDIFMACROTITLE' 1 'END OF ASSEMBLY' 1 'DBDIDSDWEIIFINORSP' 1 'DALXIMODMOVMVINOPNOTORAORGORIOUTPOPPSWRALRARRETRLCRRCRSTSBBSBISE' 1 'CP/M ASSEMBLER - VER 2.0' 1 'CANNOT CLOSE FILES' 1 'CALLENDMLDAXLHLDPCHLPUSHSHLDSPHLSTAXXCHGXTHL' 1 'ACIADCADDADIANAANDANICMACMCCMPCPIDAADADDCRDCXENDEQUHLTINRINXJMPL' 1 '()*+,-/ABCDEHLM' 1 XOR A ;zero value field 1 SUB D ;checksum 1 RLA ;carry to bit 0 1 RET Z ;taken if not alphanumeric 1 RET NZ ;no 1 RET ;bogus 1 PUSH AF ;H010C PRN line buffer 1 POP AF ;restore char 1 OR A ;pass count 1 LD SP,H0200 ;set stack 1 LD HL,H1892 ;H1892 index by 2 1 LD HL,H1891 ;and increment H1891 index 1 LD HL,H0238 ;ASM filename 1 LD HL,H0188 ;no duplicate or pointing to link field before 1 LD HL,H010C ;echo to console. H0184 = # of chars in line 1 LD HL,0064H ;get optional drive designations following '.' 1 LD HL,(H0221) ;if (H0221) + ACC = (H01D0) then jump to H108A 1 LD HL,(H0221) ;address of line in HEX file 1 LD HL,(H01D6) ;symbol at (H01D6) 1 LD HL,(H01D2) ;PC counter of PRN line 1 LD HL,(H01C9) ;holds value (example: C reg value = 0001) 1 LD HL,(H0186) ;numeric value 1 LD H,00H ;parm1 value from H186D table 1 LD E,A ;see table following. range only 13h to 21h 1 LD E,(HL) ;table at (H01CB) and zero value field 1 LD E,(HL) ;increment H0223 index 1 LD E,(HL) ;# of bytes to write 1 LD D,A ;keep running checksum for Intel HEX form 1 LD C,A ;else H1081 1 LD C,80H ;extra code not needed (see 3 lines previous) 1 LD C,15H ;write sequential 1 LD B,A ;bogus code until H148E. image from addr 1566h 1 LD B,A ;Z = null, X = console, else to H069F buffer 1 LD B,09H ;error exit if '?' found 1 LD B,06H ;6 times 80H = 300H 1 LD A,H ;write line address 1 LD A,55H ; 'U' 1 LD A,50H ; 'P' 1 LD A,1AH ;fill to end of buffer with ctrl-Z 1 LD A,10H ;max length of label = 16 chars 1 LD A,10H ;base 16 hex for 'H' 1 LD A,0AH ; base 10 decimal (default) 1 LD A,02H ;base 2 for binary 1 LD A,(HL) ;duplicate 1 LD A,(H20EF) ;PRN file line index 1 LD A,(H0236) ;and write to disk as needed 1 LD A,(H0223) ;index 1 LD A,(H01CF) ;pass count 1 LD A,(H01CF) ;assembly pass count 1 LD A,(H01CF) ;assembler pass# 1 LD A,(H0185) ;char type 1 LD A,(H010C) ;END w/o symbol gives 'E' error (both passes) 1 LD (HL),A ;store length-1 1 LD (HL),A ;store in PRN line buffer 1 LD (HL),A ;reset index to 0 1 LD (HL),20H ;clear error char 1 LD (HL),10H ;16 chars max length of label 1 LD (H20ED),HL ;value of symbol after END. possibly EOF addr? 1 LD (H110A),A ;save in last char 1 LD (H1109),A ;previous char 1 LD (H029B),HL ;of ASM file by setting index to EOF 1 LD (H01D2),HL ;ORG address for PC counters 1 LD (H01D0),HL ;address PC counter 1 LD (H01CF),A ;reset pass count to 0 1 LD (H01CD),HL ;set end of memory = BDOS base 1 LD (H0185),A ;clear char mode 1 LD (H0184),A ;index to label field for PRN file 1 LD (H0184),A ;index to label field 1 JP Z,H206C ;if 1st pass, only advance PC counter 1 JP Z,H1BBC ;handle digit 1 JP Z,H1BA7 ;if 2nd pass 1 JP Z,H123C ;taken if last char was '$' 1 JP Z,H123C ;taken if '$' 1 JP Z,H1210 ;if not digit 1 JP Z,H1205 ;if not alpha 1 JP Z,H0F97 ;taken if no HEX file designation 1 JP Z,H0F86 ;taken if no PRN file designation 1 JP Z,H0F77 ;taken if no HEX file designated 1 JP Z,H0F4F ;taken if no PRN file designated 1 JP Z,H0DBB ;error exit 1 JP NZ,H2031 ;if 2nd pass 1 JP NZ,H1F7C ;not alpha 1 JP NZ,H1F7C ; 'S' error 1 JP NZ,H1C0C ;if label assigned value 1 JP NZ,H1BFE ;if no duplicate 1 JP NZ,H1B64 ;taken if no duplicate 1 JP NZ,H1B31 ;taken if no match 1 JP NZ,H1845 ;ACC now = nth pair of whichever 2 byte table 1 JP NZ,H123C ;taken if hex digit 1 JP NC,H1F7C ;taken for parm1<13h or >=34h (should be >=22h) 1 JP NC,H1541 ;taken if end of symbol space 1 JP H132D ;go convert lower/upper conditionally 1 JP H11C7 ;loop for next char 1 JP H0EDE ;write ACC reg to console 1 JP H0EAA ;write ACC reg to HEX file (direct - after processed) 1 JP H0E34 ;write byte in ACC reg to PRN file. all regs preserved 1 JP H021E ;go close files and exit 1 INC A ;f(-) 1 INC (HL) ;increment 1st to 2nd pass 1 DEFW H1EA5 ;(21h) IN OUT 1 DEFW H1E9E ;(20h) RST 1 DEFW H1E8F ;(1Fh) DCX INX 1 DEFW H1E88 ;(1Eh) DCR INR 1 DEFW H1E81 ;(1Dh) ADC ADD ANA CMP ORA XRA SUB SBB 1 DEFW H1E78 ;(1Ch) LDA STA LHLD SHLD 1 DEFW H1E69 ;(1Bh) LDAX STAX 1 DEFW H1E60 ;(1Ah) ACI ADI ANI CPI ORI XRI SUI SBI 1 DEFW H1E50 ;(19h) MVI 1 DEFW H1E41 ;(18h) MOV 1 DEFW H1E38 ;(17h) JMP CALL 1 DEFW H1E24 ;(16h) POP PUSH 1 DEFW H1E1E ;(15h) DAD 1 DEFW H1E12 ;(14h) LXI 1 DEFW H1DCE ;(0Ch) TITLE 1 DEFW H1DA7 ;(0Bh) SET 1 DEFW H1D8D ;(0Ah) ORG 1 DEFW H1D87 ;(09h) MACRO (function not supported. gives 'N' error) 1 DEFW H1D40 ;(08h) IF 1 DEFW H1D1E ;(07h) EQU 1 DEFW H1D18 ;(06h) ENDM (function not supported. gives 'N' error) 1 DEFW H1D15 ;(05h) ENDIF 1 DEFW H1CDE ;(04h) END 1 DEFW H1CC0 ;(03h) DW 1 DEFW H1CA9 ;(02h) DS 1 DEFW H176D ;length = 5 1 DEFW H1757 ;length = 4 1 DEFW H16EF ;length = 3 1 DEFW H16DD ;length = 2 1 DEFW H16BD ;bogus? 1 DEFW H16AE ;mnem length = 5 1 DEFW H1682 ;mnem length = 4 1 DEFW H15E6 ;mnem length = 3 1 DEFW H15D4 ;mnem length = 2 1 DEFB 34H ;# of 3 char words in H15E6 table 1 DEFB 0CH,14H,0DH,1EH,00H,50H 1 DEFB 0BH ;# of 4 char words in H1682 table 1 DEFB 09H ;# of 2 char words in H15D4 table 1 DEFB 03H ;# of 5 char words in H16AE table 1 DEC (HL) ;ignore trailing char 1 CP 51H ; 'Q' octal 1 CP 4FH ; 'O' octal 1 CP 42H ; 'B' binary 1 CP 2AH ; '*' 1 CP 27H ;single quote 1 CP 24H ; '$' 1 CP 21H ;bug here. should have been 0Fh 1 CP 19H ; 'Z' 1 CP 17H ; 'X' 1 CP 10H ;10h = start of label field 1 CP 0FFH 1 CP 06H ;A-F = 0-5. carry set if A-F 1 CP 05H ;max length of mnem 1 CP 04H ;EOL ? 1 CP 01H ;alpha? 1 CALL Z,H20D7 ; 'P' error 1 CALL Z,H20A9 ;print PC at start of PRN line (if no error) 1 CALL Z,H1B85 ; 'E' error 1 CALL Z,H0218 ;error 1 CALL NZ,H20D7 ; 'P' error if duplicate symbol on 1st pass 1 CALL NZ,H20D1 ; 'D' error if DB label not 8-bit value 1 CALL NZ,H20BD ; 'R' error 1 CALL NZ,H1B85 ;call 'E' error 1 CALL NZ,H119E ;convert lower to upper case if not in quotes 1 CALL NZ,H119E ;convert if not literal 1 CALL NZ,H1151 ;store char in ASM buffer 1 CALL NZ,H10B8 ;write final line to HEX file 1 CALL NZ,H0215 ;on 2nd pass print line to PRN file 1 CALL NC,H20C7 ; 'V' error (bad register designation) 1 CALL H20E3 ; 'N' error 1 CALL H20A9 ;put HL in PRN buffer just before 'USE FACTOR' 1 CALL H20A6 ;print final PRN line addr to buffer 1 CALL H2096 ;print byte in hex to PRN file 1 CALL H2047 ;store opcode 1 CALL H1FF9 ;update PRN file PC counter (H01D2) for next line 1 CALL H1F0B ;parse operand 1 CALL H1F0B ;parse and store 8 bit label/value after comma 1 CALL H1EE7 ;parse reg value 1 CALL H1ED1 ;get addr to HL of symbol following END (if any) 1 CALL H1ED1 ;get 16 bit value/address into HL 1 CALL H1B85 ; 'E' error 1 CALL H1863 ;process word 1 CALL H15A6 ;check word for match 1 CALL H1358 ;get symbol value 1 CALL H1355 ;set value of symbol to HL 1 CALL H1352 ;test nibble (see H134F notes) 1 CALL H134F ;set nibble flag 1 CALL H134C ;add symbol to table 1 CALL H134C ;add symbol 1 CALL H1346 ;check for duplicate label 1 CALL H1343 ;clear buffer 1 CALL H11AD ;get char and store in PRN line buffer 1 CALL H116A ;null out '$' from last char 1 CALL H1106 ;parse word 1 CALL H1106 ;here after 2nd pass 1 CALL H10B8 ;write complete line to HEX file. H0221 = addr 1 CALL H10B8 ;write EOF address as data 1 CALL H109A ;write checksum to HEX file 1 CALL H0EEB ;write byte w/echo 1 CALL H0EDE ;write to console 1 CALL H0EDE ;echo to console 1 CALL H0EAA ;write ACC reg to HEX file 1 CALL H0E34 ;to console if H010C is non-space 1 CALL H0DC4 ;compare DE and HL - buffer full? 1 CALL H0D10 ;make new PRN file 1 CALL H0D10 ;make new HEX file 1 CALL H0D0B ;delete old PRN file 1 CALL H0D0B ;delete old HEX file 1 CALL H0CFA ;close PRN file 1 CALL H0CFA ;close HEX file 1 CALL H0CCD ;move filename 1 CALL H0CBC ;print title 1 CALL H0CAE ;after filename else use current drive 1 CALL H021B ;write byte to HEX file 1 CALL H0218 ;error 1 CALL H0215 ;print PRN line buffer 1 CALL H0203 ;open ASM file 1 CALL H0005 ;get current disk 1 CALL H0005 ;error exit if disk full 1 AND 08H ;bit 3 set if odd# reg (ACC,C,E or L) 1 AND 01H ; =1 if A-F 1 ;reads disk as needed. 1 ;V = bad value 1 ;U = unclained label 1 ;S = syntax error 1 ;R = wrong register 1 ;P = duplicate label or phase error 1 ;O = unknown (some form of syntax error) 1 ;N = function not supported 1 ;L = bad mnemonic 1 ;E = bad register syntax 1 ;D = not an 8 bit value for DB label expression 1 ;C = comma missing 1 ;B = unknown 1 ; PCHL SPHL XTHL XCHG 1 ;to console on 2nd pass. 1 ;table based on checksum of chars in label 1 ;reading from ASM file as necessary. if char is 1 ;numeric then return value in H0186. if LF (0Ah) 1 ;found, will print line to PRN file with echo 1 ;else H01D6 holds address of link field of dup. 1 ;duplicate label. return H01D6=0 if no duplicate 1 ;and regs ACC=parm1, B=parm2